home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / ucopper.lha / ucopper.s
Text File  |  1980-01-01  |  4KB  |  265 lines

  1.     section    lard,code
  2.     opt    c+
  3.     opt    d+
  4.  
  5. code:    IncDir    "DH0:Include/"
  6.     Include    Intuition/Intuition.I
  7.     Include    Intuition/Intuition_Lib.I
  8.     Include    Libraries/dos_LIb.i
  9.     Include    Libraries/Dos.i
  10.     Include    Exec/Exec_Lib.I
  11.     Include    Exec/Exec.I
  12.     Include    Graphics/GfxBase.I
  13.     Include    Graphics/Graphics_Lib.I
  14.     Include    Graphics/Display.I
  15.  
  16.     ;Include    Misc/EasyStart.i
  17.  
  18. CINIT    MACRO
  19.     move.l    \1,a0
  20.     move.l    #\2,d0
  21.     CALLGRAF    UCopperListInit    
  22.     ENDM
  23.  
  24. CMOVE    MACRO
  25.     move.l    \1,a1
  26.     move.w    \2,d0
  27.     move.w    \3,d1
  28.     CALLGRAF    CMove
  29.     move.l    \1,a1
  30.     CALLGRAF    CBump    
  31.     ENDM
  32.  
  33. CWAIT    MACRO
  34.     move.l    \1,a1
  35.     move.w    \2,d0
  36.     move.w    \3,d1
  37.     CALLGRAF    CWait
  38.     move.l    \1,a1
  39.     CALLGRAF    CBump    
  40.     ENDM
  41.  
  42. CEND    MACRO
  43.     move.l    \1,a1
  44.     move.w    #10000,d0
  45.     move.w    #255,d1
  46.     CALLGRAF    CWait
  47.     move.l    \1,a1
  48.     CALLGRAF    CBump    
  49.     ENDM
  50.  
  51.     *-----------------*
  52.  
  53.     Lea    GFXName,A1
  54.     Moveq    #0,D0
  55.     CALLEXEC    OpenLibrary
  56.     Move.l     D0,_GfxBase
  57.     Beq    Error
  58.  
  59.     Lea    DosName,A1
  60.     Moveq    #0,D0
  61.     CALLEXEC    OpenLibrary
  62.     Move.l     D0,_DOSBase
  63.     Beq    Error
  64.  
  65.     Lea    IntName,A1
  66.     Moveq    #0,D0
  67.     CALLEXEC    OpenLibrary
  68.     Move.l    D0,_IntuitionBase
  69.     Beq    Error
  70.  
  71.     *-----------------------------------------------*
  72.  
  73.     Lea    MyScreen,a0
  74.     CALLINT    OpenScreen
  75.     Move.l    D0,_MyScrBase
  76.     Beq    CloseInt
  77.  
  78.     Lea    MyWindow,a0
  79.     move.l    d0,nw_Screen(a0)
  80.     CALLINT    OpenWindow
  81.     Move.l    D0,_MyWinBase
  82.     Beq    CloseInt
  83.     Move.l    D0,A0
  84.     Move.l    wd_RPort(A0),_MyWinRPort
  85.     Move.l    wd_UserPort(a0),_MyWinUserPort
  86.  
  87.     *-----------------------------------------------*
  88.  
  89.     move.l    #ucl_SIZEOF,d0
  90.     move.l    #MEMF_PUBLIC+MEMF_CLEAR,d1
  91.     CALLEXEC    AllocMem
  92.     move.l    d0,MyCopper
  93.  
  94.     *-------------------*
  95.  
  96.     CINIT     MyCopper,5000
  97.  
  98.     lea    CopperList,a5
  99.  
  100. .loop    movem.w    (a5)+,d0-d1
  101.     bsr    CopCom
  102.     
  103.     cmp.w    #$ffff,0(a5)
  104.     bne    .loop
  105.     
  106.     CEND    MyCopper
  107.  
  108.     *-------------------*
  109.  
  110.     CALLEXEC    Forbid
  111.  
  112.     Move.l    _MyWinBase,a0
  113.     CALLINT    ViewPortAddress
  114.     move.l    d0,a1    
  115.     move.l    MyCopper,vp_UCopIns(a1)        ;viewPort->UCopIns=uCopList
  116.  
  117.     CALLEXEC    Permit
  118.     CALLINT    RethinkDisplay
  119.  
  120.     *-----------------------------------------------*
  121.  
  122. .WaitLoop    Move.l    _MyWinUserPort,A0
  123.     CALLEXEC    WaitPort
  124.     Move.l    _MyWinUserPort,A0
  125.     CALLEXEC    GetMsg
  126.     Move.l    D0,A1
  127.     Move.l    im_Class(A1),D2    ;D2=IDCMP Flags Directly
  128.     Move.w    im_Code(A1),D3    ;D3=Data ie key why class=Rawkey
  129.     Move.w    im_Qualifier(A1),D4    ;D4=things like CTRL SHIFT
  130.     Move.w    im_MouseX(a1),D5    ;D5=MouseX Coordinate
  131.     Move.w    im_MouseY(a1),D6    ;D5=MouseY Coordinate
  132.     Move.l    im_IAddress(A1),D7    ;D7=Addres of Intuition Obj ie Gadget
  133.     Movem.l    D0-D7/A0-A6,-(A7)    
  134.     CALLEXEC    ReplyMsg
  135.     Movem.l    (a7)+,D0-D7/A0-A6
  136.  
  137.     Cmp.l    #CLOSEWINDOW,D2
  138.     bne    .WaitLoop
  139.     
  140.     *-------------------------------*
  141.  
  142.     Move.l    _MyWinBase,a0
  143.     CALLINT    ViewPortAddress
  144.     move.l    d0,a0
  145.     CALLGRAF    FreeVPortCopLists
  146.     CALLINT    RethinkDisplay
  147.  
  148.     Move.l    _MyWinBase,A0
  149.     CALLINT    CloseWindow
  150.  
  151.     Move.l    _MyScrBase,A0
  152.     CALLINT    CloseScreen
  153.  
  154.     *-------------------------------*
  155.     
  156. CloseInt    Move.l    _IntuitionBase,A1
  157.     CALLEXEC    CloseLibrary
  158.  
  159.     Move.l    _DOSBase,A1
  160.     CALLEXEC    CloseLibrary
  161.  
  162.     Move.l    _GfxBase,A1
  163.     CALLEXEC    CloseLibrary
  164.  
  165.     *-------------------------------*
  166.  
  167. Error    Moveq    #0,D0
  168.     Rts
  169.  
  170.     *-------------------------------*
  171.  
  172. CopCom:    btst    #0,d0
  173.     beq    .move
  174.  
  175.     move.w    d0,d1
  176.     and.l    #$000000ff,d1
  177.     lsr.w    #8,d0
  178.     
  179.     CWAIT     MyCopper,d0,d1
  180.     rts
  181.     
  182. .move        CMOVE    MyCopper,d0,d1
  183.     rts
  184.         
  185.     *-------------------------------*
  186.  
  187. _MyScrBase        Dc.l    0
  188.  
  189. _MyWinBase        Dc.l    0
  190. _MyWinRPort        Dc.l    0
  191. _MyWinUserPort    Dc.l    0
  192. _MyWinVPort        Dc.l    0
  193.  
  194. _IntuitionBase    Dc.l    0
  195. _DOSBase        Dc.l    0
  196. _GfxBase        dc.l    0
  197.  
  198. GFXName        GRAFNAME
  199. IntName        INTNAME
  200. DosName        DOSNAME
  201.         even
  202.  
  203.     
  204. **************************************************
  205.  
  206. MyScreen:    dc.w    0,0
  207.     dc.w    640,200
  208.     dc.w    2
  209.     dc.b    0,1
  210.     dc.w    V_HIRES
  211.     dc.w    CUSTOMSCREEN+SCREENQUIET
  212.     dc.l    0
  213.     dc.l    NewScreenName
  214.     dc.l    0
  215.     dc.l    0
  216. NewScreenName:
  217.     dc.b    'Lard',0
  218.     cnop 0,2
  219.  
  220. MyWindow:
  221.     dc.w    34,25
  222.     dc.w    522,135
  223.     dc.b    0,1
  224.     dc.l    CLOSEWINDOW
  225.     dc.l    WINDOWSIZING+WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH
  226.     dc.l    0
  227.     dc.l    0
  228.     dc.l    NewWindowName1
  229.     dc.l    0
  230.     dc.l    0
  231.     dc.w    5,5
  232.     dc.w    -1,-1
  233.     dc.w    CUSTOMSCREEN
  234. NewWindowName1:
  235.     dc.b    'Lard',0
  236.     cnop 0,2
  237.  
  238.  
  239. ; end of PowerWindows source generation
  240.     
  241.  
  242. **************************************************
  243.  
  244. MyCopper:    dc.l    0
  245.     
  246. CopperList:        dc.w    $0007,$fffe,$180,$f44
  247.         dc.w    $0107,$fffe,$180,$aaa
  248.  
  249.         dc.w    $180,$aaa
  250.         dc.w    $182,$000
  251.         dc.w    $184,$fff
  252.         dc.w    $186,$68b
  253.  
  254.         dc.w    $c807,$fffe,$180,$f44
  255.         dc.w    $c907,$fffe,$180,$aaa
  256.  
  257.         dc.w    $ffff,$fffe    ; end of copper list
  258.  
  259.  
  260.     
  261.     end
  262.  
  263.  
  264.  
  265.